<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/bitmap.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/bitmap.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="Maybe">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X19MSU5VWF9CSVRNQVBfSF8w"><span class="b">__LINUX_BITMAP_H</span></a>
<a name="2" /><span class="Maybe">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19MSU5VWF9CSVRNQVBfSF8w"><span class="b">__LINUX_BITMAP_H</span></a>
<a name="3" /><span class="Maybe">       3:</span> 
<a name="4" /><span class="Maybe">       4:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">__ASSEMBLY__</span>
<a name="5" /><span class="Maybe">       5:</span> 
<a name="6" /><span class="Maybe">       6:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">types</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="7" /><span class="Maybe">       7:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">bitops</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="8" /><span class="Maybe">       8:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">string</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="9" /><span class="Maybe">       9:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">kernel</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="10" /><span class="Maybe">      10:</span> 
<a name="11" /><span class="Maybe">      11:</span> <span class="k">/*</span>
<a name="12" /><span class="Maybe">      12:</span> <span class="k"> * bitmaps provide bit arrays that consume one or more unsigned</span>
<a name="13" /><span class="Maybe">      13:</span> <span class="k"> * longs.  The bitmap interface and available operations are listed</span>
<a name="14" /><span class="Maybe">      14:</span> <span class="k"> * here, in bitmap.h</span>
<a name="15" /><span class="Maybe">      15:</span> <span class="k"> *</span>
<a name="16" /><span class="Maybe">      16:</span> <span class="k"> * Function implementations generic to all architectures are in</span>
<a name="17" /><span class="Maybe">      17:</span> <span class="k"> * lib/bitmap.c.  Functions implementations that are architecture</span>
<a name="18" /><span class="Maybe">      18:</span> <span class="k"> * specific are in various include/asm-&lt;arch&gt;/bitops.h headers</span>
<a name="19" /><span class="Maybe">      19:</span> <span class="k"> * and other arch/&lt;arch&gt; specific files.</span>
<a name="20" /><span class="Maybe">      20:</span> <span class="k"> *</span>
<a name="21" /><span class="Maybe">      21:</span> <span class="k"> * See lib/bitmap.c for more details.</span>
<a name="22" /><span class="Maybe">      22:</span> <span class="k"> */</span>
<a name="23" /><span class="Maybe">      23:</span> 
<a name="24" /><span class="Maybe">      24:</span> <span class="k">/*</span>
<a name="25" /><span class="Maybe">      25:</span> <span class="k"> * The available bitmap operations and their rough meaning in the</span>
<a name="26" /><span class="Maybe">      26:</span> <span class="k"> * case that the bitmap is a single unsigned long are thus:</span>
<a name="27" /><span class="Maybe">      27:</span> <span class="k"> *</span>
<a name="28" /><span class="Maybe">      28:</span> <span class="k"> * Note that nbits should be always a compile time evaluable constant.</span>
<a name="29" /><span class="Maybe">      29:</span> <span class="k"> * Otherwise many inlines will generate horrible code.</span>
<a name="30" /><span class="Maybe">      30:</span> <span class="k"> *</span>
<a name="31" /><span class="Maybe">      31:</span> <span class="k"> * bitmap_zero(dst, nbits)            *dst = 0UL</span>
<a name="32" /><span class="Maybe">      32:</span> <span class="k"> * bitmap_fill(dst, nbits)            *dst = ~0UL</span>
<a name="33" /><span class="Maybe">      33:</span> <span class="k"> * bitmap_copy(dst, src, nbits)            *dst = *src</span>
<a name="34" /><span class="Maybe">      34:</span> <span class="k"> * bitmap_and(dst, src1, src2, nbits)        *dst = *src1 &amp; *src2</span>
<a name="35" /><span class="Maybe">      35:</span> <span class="k"> * bitmap_or(dst, src1, src2, nbits)        *dst = *src1 | *src2</span>
<a name="36" /><span class="Maybe">      36:</span> <span class="k"> * bitmap_xor(dst, src1, src2, nbits)        *dst = *src1 ^ *src2</span>
<a name="37" /><span class="Maybe">      37:</span> <span class="k"> * bitmap_andnot(dst, src1, src2, nbits)    *dst = *src1 &amp; ~(*src2)</span>
<a name="38" /><span class="Maybe">      38:</span> <span class="k"> * bitmap_complement(dst, src, nbits)        *dst = ~(*src)</span>
<a name="39" /><span class="Maybe">      39:</span> <span class="k"> * bitmap_equal(src1, src2, nbits)        Are *src1 and *src2 equal?</span>
<a name="40" /><span class="Maybe">      40:</span> <span class="k"> * bitmap_intersects(src1, src2, nbits)     Do *src1 and *src2 overlap?</span>
<a name="41" /><span class="Maybe">      41:</span> <span class="k"> * bitmap_subset(src1, src2, nbits)        Is *src1 a subset of *src2?</span>
<a name="42" /><span class="Maybe">      42:</span> <span class="k"> * bitmap_empty(src, nbits)            Are all bits zero in *src?</span>
<a name="43" /><span class="Maybe">      43:</span> <span class="k"> * bitmap_full(src, nbits)            Are all bits set in *src?</span>
<a name="44" /><span class="Maybe">      44:</span> <span class="k"> * bitmap_weight(src, nbits)            Hamming Weight: number set bits</span>
<a name="45" /><span class="Maybe">      45:</span> <span class="k"> * bitmap_set(dst, pos, nbits)            Set specified bit area</span>
<a name="46" /><span class="Maybe">      46:</span> <span class="k"> * bitmap_clear(dst, pos, nbits)        Clear specified bit area</span>
<a name="47" /><span class="Maybe">      47:</span> <span class="k"> * bitmap_find_next_zero_area(buf, len, pos, n, mask)    Find bit free area</span>
<a name="48" /><span class="Maybe">      48:</span> <span class="k"> * bitmap_shift_right(dst, src, n, nbits)    *dst = *src &gt;&gt; n</span>
<a name="49" /><span class="Maybe">      49:</span> <span class="k"> * bitmap_shift_left(dst, src, n, nbits)    *dst = *src &lt;&lt; n</span>
<a name="50" /><span class="Maybe">      50:</span> <span class="k"> * bitmap_remap(dst, src, old, new, nbits)    *dst = map(old, new)(src)</span>
<a name="51" /><span class="Maybe">      51:</span> <span class="k"> * bitmap_bitremap(oldbit, old, new, nbits)    newbit = map(old, new)(oldbit)</span>
<a name="52" /><span class="Maybe">      52:</span> <span class="k"> * bitmap_onto(dst, orig, relmap, nbits)    *dst = orig relative to relmap</span>
<a name="53" /><span class="Maybe">      53:</span> <span class="k"> * bitmap_fold(dst, orig, sz, nbits)        dst bits = orig bits mod sz</span>
<a name="54" /><span class="Maybe">      54:</span> <span class="k"> * bitmap_scnprintf(buf, len, src, nbits)    Print bitmap src to buf</span>
<a name="55" /><span class="Maybe">      55:</span> <span class="k"> * bitmap_parse(buf, buflen, dst, nbits)    Parse bitmap dst from kernel buf</span>
<a name="56" /><span class="Maybe">      56:</span> <span class="k"> * bitmap_parse_user(ubuf, ulen, dst, nbits)    Parse bitmap dst from user buf</span>
<a name="57" /><span class="Maybe">      57:</span> <span class="k"> * bitmap_scnlistprintf(buf, len, src, nbits)    Print bitmap src as list to buf</span>
<a name="58" /><span class="Maybe">      58:</span> <span class="k"> * bitmap_parselist(buf, dst, nbits)        Parse bitmap dst from kernel buf</span>
<a name="59" /><span class="Maybe">      59:</span> <span class="k"> * bitmap_parselist_user(buf, dst, nbits)    Parse bitmap dst from user buf</span>
<a name="60" /><span class="Maybe">      60:</span> <span class="k"> * bitmap_find_free_region(bitmap, bits, order)    Find and allocate bit region</span>
<a name="61" /><span class="Maybe">      61:</span> <span class="k"> * bitmap_release_region(bitmap, pos, order)    Free specified bit region</span>
<a name="62" /><span class="Maybe">      62:</span> <span class="k"> * bitmap_allocate_region(bitmap, pos, order)    Allocate specified bit region</span>
<a name="63" /><span class="Maybe">      63:</span> <span class="k"> */</span>
<a name="64" /><span class="Maybe">      64:</span> 
<a name="65" /><span class="Maybe">      65:</span> <span class="k">/*</span>
<a name="66" /><span class="Maybe">      66:</span> <span class="k"> * Also the following operations in asm/bitops.h apply to bitmaps.</span>
<a name="67" /><span class="Maybe">      67:</span> <span class="k"> *</span>
<a name="68" /><span class="Maybe">      68:</span> <span class="k"> * set_bit(bit, addr)            *addr |= bit</span>
<a name="69" /><span class="Maybe">      69:</span> <span class="k"> * clear_bit(bit, addr)            *addr &amp;= ~bit</span>
<a name="70" /><span class="Maybe">      70:</span> <span class="k"> * change_bit(bit, addr)        *addr ^= bit</span>
<a name="71" /><span class="Maybe">      71:</span> <span class="k"> * test_bit(bit, addr)            Is bit set in *addr?</span>
<a name="72" /><span class="Maybe">      72:</span> <span class="k"> * test_and_set_bit(bit, addr)        Set bit and return old value</span>
<a name="73" /><span class="Maybe">      73:</span> <span class="k"> * test_and_clear_bit(bit, addr)    Clear bit and return old value</span>
<a name="74" /><span class="Maybe">      74:</span> <span class="k"> * test_and_change_bit(bit, addr)    Change bit and return old value</span>
<a name="75" /><span class="Maybe">      75:</span> <span class="k"> * find_first_zero_bit(addr, nbits)    Position first zero bit in *addr</span>
<a name="76" /><span class="Maybe">      76:</span> <span class="k"> * find_first_bit(addr, nbits)        Position first set bit in *addr</span>
<a name="77" /><span class="Maybe">      77:</span> <span class="k"> * find_next_zero_bit(addr, nbits, bit)    Position next zero bit in *addr &gt;= bit</span>
<a name="78" /><span class="Maybe">      78:</span> <span class="k"> * find_next_bit(addr, nbits, bit)    Position next set bit in *addr &gt;= bit</span>
<a name="79" /><span class="Maybe">      79:</span> <span class="k"> */</span>
<a name="80" /><span class="Maybe">      80:</span> 
<a name="81" /><span class="Maybe">      81:</span> <span class="k">/*</span>
<a name="82" /><span class="Maybe">      82:</span> <span class="k"> * The DECLARE_BITMAP(name,bits) macro, in linux/types.h, can be used</span>
<a name="83" /><span class="Maybe">      83:</span> <span class="k"> * to declare an array named &apos;name&apos; of just enough unsigned longs to</span>
<a name="84" /><span class="Maybe">      84:</span> <span class="k"> * contain all bit positions from 0 to &apos;bits&apos; - 1.</span>
<a name="85" /><span class="Maybe">      85:</span> <span class="k"> */</span>
<a name="86" /><span class="Maybe">      86:</span> 
<a name="87" /><span class="Maybe">      87:</span> <span class="k">/*</span>
<a name="88" /><span class="Maybe">      88:</span> <span class="k"> * lib/bitmap.c provides these functions:</span>
<a name="89" /><span class="Maybe">      89:</span> <span class="k"> */</span>
<a name="90" /><span class="Maybe">      90:</span> 
<a name="91" /><span class="Maybe">      91:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">__bitmap_empty</span><span class="f">(</span><span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="92" /><span class="Maybe">      92:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">__bitmap_full</span><span class="f">(</span><span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="93" /><span class="Maybe">      93:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">__bitmap_equal</span><span class="f">(</span><span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap1</span><span class="f">,</span>
<a name="94" /><span class="Maybe">      94:</span>                     <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap2</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="95" /><span class="Maybe">      95:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">__bitmap_complement</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src</span><span class="f">,</span>
<a name="96" /><span class="Maybe">      96:</span>             <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="97" /><span class="Maybe">      97:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">__bitmap_shift_right</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span>
<a name="98" /><span class="Maybe">      98:</span>                         <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src</span><span class="f">,</span> <span class="m">int</span> <span class="b">shift</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="99" /><span class="Maybe">      99:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">__bitmap_shift_left</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span>
<a name="100" /><span class="Maybe">     100:</span>                         <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src</span><span class="f">,</span> <span class="m">int</span> <span class="b">shift</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="101" /><span class="Maybe">     101:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">__bitmap_and</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap1</span><span class="f">,</span>
<a name="102" /><span class="Maybe">     102:</span>             <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap2</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="103" /><span class="Maybe">     103:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">__bitmap_or</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap1</span><span class="f">,</span>
<a name="104" /><span class="Maybe">     104:</span>             <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap2</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="105" /><span class="Maybe">     105:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">__bitmap_xor</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap1</span><span class="f">,</span>
<a name="106" /><span class="Maybe">     106:</span>             <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap2</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="107" /><span class="Maybe">     107:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">__bitmap_andnot</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap1</span><span class="f">,</span>
<a name="108" /><span class="Maybe">     108:</span>             <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap2</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="109" /><span class="Maybe">     109:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">__bitmap_intersects</span><span class="f">(</span><span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap1</span><span class="f">,</span>
<a name="110" /><span class="Maybe">     110:</span>             <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap2</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="111" /><span class="Maybe">     111:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">__bitmap_subset</span><span class="f">(</span><span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap1</span><span class="f">,</span>
<a name="112" /><span class="Maybe">     112:</span>             <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap2</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="113" /><span class="Maybe">     113:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">__bitmap_weight</span><span class="f">(</span><span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="114" /><span class="Maybe">     114:</span> 
<a name="115" /><span class="Maybe">     115:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">bitmap_set</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">map</span><span class="f">,</span> <span class="m">int</span> <span class="b">i</span><span class="f">,</span> <span class="m">int</span> <span class="b">len</span><span class="f">)</span><span class="f">;</span>
<a name="116" /><span class="Maybe">     116:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">bitmap_clear</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">map</span><span class="f">,</span> <span class="m">int</span> <span class="b">start</span><span class="f">,</span> <span class="m">int</span> <span class="b">nr</span><span class="f">)</span><span class="f">;</span>
<a name="117" /><span class="Maybe">     117:</span> <span class="m">extern</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">bitmap_find_next_zero_area</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">map</span><span class="f">,</span>
<a name="118" /><span class="Maybe">     118:</span>                      <span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">,</span>
<a name="119" /><span class="Maybe">     119:</span>                      <span class="m">unsigned</span> <span class="m">long</span> <span class="b">start</span><span class="f">,</span>
<a name="120" /><span class="Maybe">     120:</span>                      <span class="m">unsigned</span> <span class="m">int</span> <span class="b">nr</span><span class="f">,</span>
<a name="121" /><span class="Maybe">     121:</span>                      <span class="m">unsigned</span> <span class="m">long</span> <span class="b">align_mask</span><span class="f">)</span><span class="f">;</span>
<a name="122" /><span class="Maybe">     122:</span> 
<a name="123" /><span class="Maybe">     123:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">bitmap_scnprintf</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">len</span><span class="f">,</span>
<a name="124" /><span class="Maybe">     124:</span>             <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="125" /><span class="Maybe">     125:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">__bitmap_parse</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">buflen</span><span class="f">,</span> <span class="m">int</span> <span class="b">is_user</span><span class="f">,</span>
<a name="126" /><span class="Maybe">     126:</span>             <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="127" /><span class="Maybe">     127:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">bitmap_parse_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">ubuf</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">ulen</span><span class="f">,</span>
<a name="128" /><span class="Maybe">     128:</span>             <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="129" /><span class="Maybe">     129:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">bitmap_scnlistprintf</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">len</span><span class="f">,</span>
<a name="130" /><span class="Maybe">     130:</span>             <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="131" /><span class="Maybe">     131:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">bitmap_parselist</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">maskp</span><span class="f">,</span>
<a name="132" /><span class="Maybe">     132:</span>             <span class="m">int</span> <span class="b">nmaskbits</span><span class="f">)</span><span class="f">;</span>
<a name="133" /><span class="Maybe">     133:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">bitmap_parselist_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">ubuf</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">ulen</span><span class="f">,</span>
<a name="134" /><span class="Maybe">     134:</span>             <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="135" /><span class="Maybe">     135:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">bitmap_remap</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src</span><span class="f">,</span>
<a name="136" /><span class="Maybe">     136:</span>         <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">old</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="m">new</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="137" /><span class="Maybe">     137:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">bitmap_bitremap</span><span class="f">(</span><span class="m">int</span> <span class="b">oldbit</span><span class="f">,</span>
<a name="138" /><span class="Maybe">     138:</span>         <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">old</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="m">new</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="139" /><span class="Maybe">     139:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">bitmap_onto</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">orig</span><span class="f">,</span>
<a name="140" /><span class="Maybe">     140:</span>         <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">relmap</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="141" /><span class="Maybe">     141:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">bitmap_fold</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">orig</span><span class="f">,</span>
<a name="142" /><span class="Maybe">     142:</span>         <span class="m">int</span> <span class="b">sz</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="143" /><span class="Maybe">     143:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">bitmap_find_free_region</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">,</span> <span class="m">int</span> <span class="b">order</span><span class="f">)</span><span class="f">;</span>
<a name="144" /><span class="Maybe">     144:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">bitmap_release_region</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap</span><span class="f">,</span> <span class="m">int</span> <span class="b">pos</span><span class="f">,</span> <span class="m">int</span> <span class="b">order</span><span class="f">)</span><span class="f">;</span>
<a name="145" /><span class="Maybe">     145:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">bitmap_allocate_region</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap</span><span class="f">,</span> <span class="m">int</span> <span class="b">pos</span><span class="f">,</span> <span class="m">int</span> <span class="b">order</span><span class="f">)</span><span class="f">;</span>
<a name="146" /><span class="Maybe">     146:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">bitmap_copy_le</span><span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="147" /><span class="Maybe">     147:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">bitmap_ord_to_pos</span><span class="f">(</span><span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap</span><span class="f">,</span> <span class="m">int</span> <span class="b">n</span><span class="f">,</span> <span class="m">int</span> <span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="148" /><span class="Maybe">     148:</span> 
<a name="149" /><span class="Maybe">     149:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_QklUTUFQX0ZJUlNUX1dPUkRfTUFTS18w"><span class="b">BITMAP_FIRST_WORD_MASK</span></a><span class="f">(</span><span class="b">start</span><span class="f">)</span> <span class="f">(</span><span class="f">~</span><span class="c">0UL</span> <span class="f">&lt;&lt;</span> <span class="f">(</span><span class="f">(</span><span class="b">start</span><span class="f">)</span> <span class="f">%</span> <a href="cpu.c_macros_ref.html#_QklUU19QRVJfTE9OR18w"><span class="b">BITS_PER_LONG</span></a><span class="f">)</span><span class="f">)</span>
<a name="150" /><span class="Maybe">     150:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_QklUTUFQX0xBU1RfV09SRF9NQVNLXzA_"><span class="b">BITMAP_LAST_WORD_MASK</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span>                    \
<a name="151" /><span class="Maybe">     151:</span> <span class="f">(</span>                                    \
<a name="152" /><span class="Maybe">     152:</span>     <span class="f">(</span><span class="f">(</span><span class="b">nbits</span><span class="f">)</span> <span class="f">%</span> <a href="cpu.c_macros_ref.html#_QklUU19QRVJfTE9OR18w"><span class="b">BITS_PER_LONG</span></a><span class="f">)</span> <span class="f">?</span>                    \
<a name="153" /><span class="Maybe">     153:</span>         <span class="f">(</span><span class="c">1UL</span><span class="f">&lt;&lt;</span><span class="f">(</span><span class="f">(</span><span class="b">nbits</span><span class="f">)</span> <span class="f">%</span> <a href="cpu.c_macros_ref.html#_QklUU19QRVJfTE9OR18w"><span class="b">BITS_PER_LONG</span></a><span class="f">)</span><span class="f">)</span><span class="f">-</span><span class="c">1</span> <span class="f">:</span> <span class="f">~</span><span class="c">0UL</span>        \
<a name="154" /><span class="Maybe">     154:</span> <span class="f">)</span>
<a name="155" /><span class="Maybe">     155:</span> 
<a name="156" /><span class="Maybe">     156:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_c21hbGxfY29uc3RfbmJpdHNfMA__"><span class="b">small_const_nbits</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span> \
<a name="157" /><span class="Maybe">     157:</span>     <span class="f">(</span><span class="b">__builtin_constant_p</span><span class="f">(</span><span class="b">nbits</span><span class="f">)</span> <span class="f">&amp;&amp;</span> <span class="f">(</span><span class="b">nbits</span><span class="f">)</span> <span class="f">&lt;=</span> <a href="cpu.c_macros_ref.html#_QklUU19QRVJfTE9OR18w"><span class="b">BITS_PER_LONG</span></a><span class="f">)</span>
<a name="158" /><span class="Maybe">     158:</span> 
<a name="159" /><span class="Maybe">     159:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">bitmap_zero</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="160" /><span class="Maybe">     160:</span> <span class="f">{</span>
<a name="161" /><span class="Maybe">     161:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_c21hbGxfY29uc3RfbmJpdHNfMA__"><span class="b">small_const_nbits</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span>
<a name="162" /><span class="Maybe">     162:</span>         <span class="f">*</span><span class="b">dst</span> <span class="f">=</span> <span class="c">0UL</span><span class="f">;</span>
<a name="163" /><span class="Maybe">     163:</span>     <span class="m">else</span> <span class="f">{</span>
<a name="164" /><span class="Maybe">     164:</span>         <span class="m">int</span> <span class="b">len</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_QklUU19UT19MT05HU18w"><span class="b">BITS_TO_LONGS</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span> <span class="f">*</span> <span class="m">sizeof</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="f">;</span>
<a name="165" /><span class="Maybe">     165:</span>         <span class="b">memset</span><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="c">0</span><span class="f">,</span> <span class="b">len</span><span class="f">)</span><span class="f">;</span>
<a name="166" /><span class="Maybe">     166:</span>     <span class="f">}</span>
<a name="167" /><span class="Maybe">     167:</span> <span class="f">}</span>
<a name="168" /><span class="Maybe">     168:</span> 
<a name="169" /><span class="Maybe">     169:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">bitmap_fill</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="170" /><span class="Maybe">     170:</span> <span class="f">{</span>
<a name="171" /><span class="Maybe">     171:</span>     <span class="b">size_t</span> <span class="b">nlongs</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_QklUU19UT19MT05HU18w"><span class="b">BITS_TO_LONGS</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="172" /><span class="Maybe">     172:</span>     <span class="m">if</span> <span class="f">(</span><span class="f">!</span><a href="cpu.c_macros_ref.html#_c21hbGxfY29uc3RfbmJpdHNfMA__"><span class="b">small_const_nbits</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span> <span class="f">{</span>
<a name="173" /><span class="Maybe">     173:</span>         <span class="m">int</span> <span class="b">len</span> <span class="f">=</span> <span class="f">(</span><span class="b">nlongs</span> <span class="f">-</span> <span class="c">1</span><span class="f">)</span> <span class="f">*</span> <span class="m">sizeof</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="f">;</span>
<a name="174" /><span class="Maybe">     174:</span>         <span class="b">memset</span><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="c">0xff</span><span class="f">,</span>  <span class="b">len</span><span class="f">)</span><span class="f">;</span>
<a name="175" /><span class="Maybe">     175:</span>     <span class="f">}</span>
<a name="176" /><span class="Maybe">     176:</span>     <span class="b">dst</span><span class="f">[</span><span class="b">nlongs</span> <span class="f">-</span> <span class="c">1</span><span class="f">]</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_QklUTUFQX0xBU1RfV09SRF9NQVNLXzA_"><span class="b">BITMAP_LAST_WORD_MASK</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="177" /><span class="Maybe">     177:</span> <span class="f">}</span>
<a name="178" /><span class="Maybe">     178:</span> 
<a name="179" /><span class="Maybe">     179:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">bitmap_copy</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src</span><span class="f">,</span>
<a name="180" /><span class="Maybe">     180:</span>             <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="181" /><span class="Maybe">     181:</span> <span class="f">{</span>
<a name="182" /><span class="Maybe">     182:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_c21hbGxfY29uc3RfbmJpdHNfMA__"><span class="b">small_const_nbits</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span>
<a name="183" /><span class="Maybe">     183:</span>         <span class="f">*</span><span class="b">dst</span> <span class="f">=</span> <span class="f">*</span><span class="b">src</span><span class="f">;</span>
<a name="184" /><span class="Maybe">     184:</span>     <span class="m">else</span> <span class="f">{</span>
<a name="185" /><span class="Maybe">     185:</span>         <span class="m">int</span> <span class="b">len</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_QklUU19UT19MT05HU18w"><span class="b">BITS_TO_LONGS</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span> <span class="f">*</span> <span class="m">sizeof</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="f">;</span>
<a name="186" /><span class="Maybe">     186:</span>         <a href="cpu.c_macros_ref.html#_bWVtY3B5XzA_"><span class="b">memcpy</span></a><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src</span><span class="f">,</span> <span class="b">len</span><span class="f">)</span><span class="f">;</span>
<a name="187" /><span class="Maybe">     187:</span>     <span class="f">}</span>
<a name="188" /><span class="Maybe">     188:</span> <span class="f">}</span>
<a name="189" /><span class="Maybe">     189:</span> 
<a name="190" /><span class="Maybe">     190:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">bitmap_and</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src1</span><span class="f">,</span>
<a name="191" /><span class="Maybe">     191:</span>             <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src2</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="192" /><span class="Maybe">     192:</span> <span class="f">{</span>
<a name="193" /><span class="Maybe">     193:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_c21hbGxfY29uc3RfbmJpdHNfMA__"><span class="b">small_const_nbits</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span>
<a name="194" /><span class="Maybe">     194:</span>         <span class="m">return</span> <span class="f">(</span><span class="f">*</span><span class="b">dst</span> <span class="f">=</span> <span class="f">*</span><span class="b">src1</span> <span class="f">&amp;</span> <span class="f">*</span><span class="b">src2</span><span class="f">)</span> <span class="f">!=</span> <span class="c">0</span><span class="f">;</span>
<a name="195" /><span class="Maybe">     195:</span>     <span class="m">return</span> <span class="b">__bitmap_and</span><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="196" /><span class="Maybe">     196:</span> <span class="f">}</span>
<a name="197" /><span class="Maybe">     197:</span> 
<a name="198" /><span class="Maybe">     198:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">bitmap_or</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src1</span><span class="f">,</span>
<a name="199" /><span class="Maybe">     199:</span>             <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src2</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="200" /><span class="Maybe">     200:</span> <span class="f">{</span>
<a name="201" /><span class="Maybe">     201:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_c21hbGxfY29uc3RfbmJpdHNfMA__"><span class="b">small_const_nbits</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span>
<a name="202" /><span class="Maybe">     202:</span>         <span class="f">*</span><span class="b">dst</span> <span class="f">=</span> <span class="f">*</span><span class="b">src1</span> <span class="f">|</span> <span class="f">*</span><span class="b">src2</span><span class="f">;</span>
<a name="203" /><span class="Maybe">     203:</span>     <span class="m">else</span>
<a name="204" /><span class="Maybe">     204:</span>         <span class="b">__bitmap_or</span><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="205" /><span class="Maybe">     205:</span> <span class="f">}</span>
<a name="206" /><span class="Maybe">     206:</span> 
<a name="207" /><span class="Maybe">     207:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">bitmap_xor</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src1</span><span class="f">,</span>
<a name="208" /><span class="Maybe">     208:</span>             <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src2</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="209" /><span class="Maybe">     209:</span> <span class="f">{</span>
<a name="210" /><span class="Maybe">     210:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_c21hbGxfY29uc3RfbmJpdHNfMA__"><span class="b">small_const_nbits</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span>
<a name="211" /><span class="Maybe">     211:</span>         <span class="f">*</span><span class="b">dst</span> <span class="f">=</span> <span class="f">*</span><span class="b">src1</span> <span class="f">^</span> <span class="f">*</span><span class="b">src2</span><span class="f">;</span>
<a name="212" /><span class="Maybe">     212:</span>     <span class="m">else</span>
<a name="213" /><span class="Maybe">     213:</span>         <span class="b">__bitmap_xor</span><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="214" /><span class="Maybe">     214:</span> <span class="f">}</span>
<a name="215" /><span class="Maybe">     215:</span> 
<a name="216" /><span class="Maybe">     216:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">bitmap_andnot</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src1</span><span class="f">,</span>
<a name="217" /><span class="Maybe">     217:</span>             <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src2</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="218" /><span class="Maybe">     218:</span> <span class="f">{</span>
<a name="219" /><span class="Maybe">     219:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_c21hbGxfY29uc3RfbmJpdHNfMA__"><span class="b">small_const_nbits</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span>
<a name="220" /><span class="Maybe">     220:</span>         <span class="m">return</span> <span class="f">(</span><span class="f">*</span><span class="b">dst</span> <span class="f">=</span> <span class="f">*</span><span class="b">src1</span> <span class="f">&amp;</span> <span class="f">~</span><span class="f">(</span><span class="f">*</span><span class="b">src2</span><span class="f">)</span><span class="f">)</span> <span class="f">!=</span> <span class="c">0</span><span class="f">;</span>
<a name="221" /><span class="Maybe">     221:</span>     <span class="m">return</span> <span class="b">__bitmap_andnot</span><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="222" /><span class="Maybe">     222:</span> <span class="f">}</span>
<a name="223" /><span class="Maybe">     223:</span> 
<a name="224" /><span class="Maybe">     224:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">bitmap_complement</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src</span><span class="f">,</span>
<a name="225" /><span class="Maybe">     225:</span>             <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="226" /><span class="Maybe">     226:</span> <span class="f">{</span>
<a name="227" /><span class="Maybe">     227:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_c21hbGxfY29uc3RfbmJpdHNfMA__"><span class="b">small_const_nbits</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span>
<a name="228" /><span class="Maybe">     228:</span>         <span class="f">*</span><span class="b">dst</span> <span class="f">=</span> <span class="f">~</span><span class="f">(</span><span class="f">*</span><span class="b">src</span><span class="f">)</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_QklUTUFQX0xBU1RfV09SRF9NQVNLXzA_"><span class="b">BITMAP_LAST_WORD_MASK</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="229" /><span class="Maybe">     229:</span>     <span class="m">else</span>
<a name="230" /><span class="Maybe">     230:</span>         <span class="b">__bitmap_complement</span><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="231" /><span class="Maybe">     231:</span> <span class="f">}</span>
<a name="232" /><span class="Maybe">     232:</span> 
<a name="233" /><span class="Maybe">     233:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">bitmap_equal</span><span class="f">(</span><span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src1</span><span class="f">,</span>
<a name="234" /><span class="Maybe">     234:</span>             <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src2</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="235" /><span class="Maybe">     235:</span> <span class="f">{</span>
<a name="236" /><span class="Maybe">     236:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_c21hbGxfY29uc3RfbmJpdHNfMA__"><span class="b">small_const_nbits</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span>
<a name="237" /><span class="Maybe">     237:</span>         <span class="m">return</span> <span class="f">!</span> <span class="f">(</span><span class="f">(</span><span class="f">*</span><span class="b">src1</span> <span class="f">^</span> <span class="f">*</span><span class="b">src2</span><span class="f">)</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_QklUTUFQX0xBU1RfV09SRF9NQVNLXzA_"><span class="b">BITMAP_LAST_WORD_MASK</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="238" /><span class="Maybe">     238:</span>     <span class="m">else</span>
<a name="239" /><span class="Maybe">     239:</span>         <span class="m">return</span> <span class="b">__bitmap_equal</span><span class="f">(</span><span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="240" /><span class="Maybe">     240:</span> <span class="f">}</span>
<a name="241" /><span class="Maybe">     241:</span> 
<a name="242" /><span class="Maybe">     242:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">bitmap_intersects</span><span class="f">(</span><span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src1</span><span class="f">,</span>
<a name="243" /><span class="Maybe">     243:</span>             <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src2</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="244" /><span class="Maybe">     244:</span> <span class="f">{</span>
<a name="245" /><span class="Maybe">     245:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_c21hbGxfY29uc3RfbmJpdHNfMA__"><span class="b">small_const_nbits</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span>
<a name="246" /><span class="Maybe">     246:</span>         <span class="m">return</span> <span class="f">(</span><span class="f">(</span><span class="f">*</span><span class="b">src1</span> <span class="f">&amp;</span> <span class="f">*</span><span class="b">src2</span><span class="f">)</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_QklUTUFQX0xBU1RfV09SRF9NQVNLXzA_"><span class="b">BITMAP_LAST_WORD_MASK</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span> <span class="f">!=</span> <span class="c">0</span><span class="f">;</span>
<a name="247" /><span class="Maybe">     247:</span>     <span class="m">else</span>
<a name="248" /><span class="Maybe">     248:</span>         <span class="m">return</span> <span class="b">__bitmap_intersects</span><span class="f">(</span><span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="249" /><span class="Maybe">     249:</span> <span class="f">}</span>
<a name="250" /><span class="Maybe">     250:</span> 
<a name="251" /><span class="Maybe">     251:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">bitmap_subset</span><span class="f">(</span><span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src1</span><span class="f">,</span>
<a name="252" /><span class="Maybe">     252:</span>             <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src2</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="253" /><span class="Maybe">     253:</span> <span class="f">{</span>
<a name="254" /><span class="Maybe">     254:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_c21hbGxfY29uc3RfbmJpdHNfMA__"><span class="b">small_const_nbits</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span>
<a name="255" /><span class="Maybe">     255:</span>         <span class="m">return</span> <span class="f">!</span> <span class="f">(</span><span class="f">(</span><span class="f">*</span><span class="b">src1</span> <span class="f">&amp;</span> <span class="f">~</span><span class="f">(</span><span class="f">*</span><span class="b">src2</span><span class="f">)</span><span class="f">)</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_QklUTUFQX0xBU1RfV09SRF9NQVNLXzA_"><span class="b">BITMAP_LAST_WORD_MASK</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="256" /><span class="Maybe">     256:</span>     <span class="m">else</span>
<a name="257" /><span class="Maybe">     257:</span>         <span class="m">return</span> <span class="b">__bitmap_subset</span><span class="f">(</span><span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="258" /><span class="Maybe">     258:</span> <span class="f">}</span>
<a name="259" /><span class="Maybe">     259:</span> 
<a name="260" /><span class="Maybe">     260:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">bitmap_empty</span><span class="f">(</span><span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="261" /><span class="Maybe">     261:</span> <span class="f">{</span>
<a name="262" /><span class="Maybe">     262:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_c21hbGxfY29uc3RfbmJpdHNfMA__"><span class="b">small_const_nbits</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span>
<a name="263" /><span class="Maybe">     263:</span>         <span class="m">return</span> <span class="f">!</span> <span class="f">(</span><span class="f">*</span><span class="b">src</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_QklUTUFQX0xBU1RfV09SRF9NQVNLXzA_"><span class="b">BITMAP_LAST_WORD_MASK</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="264" /><span class="Maybe">     264:</span>     <span class="m">else</span>
<a name="265" /><span class="Maybe">     265:</span>         <span class="m">return</span> <span class="b">__bitmap_empty</span><span class="f">(</span><span class="b">src</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="266" /><span class="Maybe">     266:</span> <span class="f">}</span>
<a name="267" /><span class="Maybe">     267:</span> 
<a name="268" /><span class="Maybe">     268:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">bitmap_full</span><span class="f">(</span><span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="269" /><span class="Maybe">     269:</span> <span class="f">{</span>
<a name="270" /><span class="Maybe">     270:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_c21hbGxfY29uc3RfbmJpdHNfMA__"><span class="b">small_const_nbits</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span>
<a name="271" /><span class="Maybe">     271:</span>         <span class="m">return</span> <span class="f">!</span> <span class="f">(</span><span class="f">~</span><span class="f">(</span><span class="f">*</span><span class="b">src</span><span class="f">)</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_QklUTUFQX0xBU1RfV09SRF9NQVNLXzA_"><span class="b">BITMAP_LAST_WORD_MASK</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="272" /><span class="Maybe">     272:</span>     <span class="m">else</span>
<a name="273" /><span class="Maybe">     273:</span>         <span class="m">return</span> <span class="b">__bitmap_full</span><span class="f">(</span><span class="b">src</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="274" /><span class="Maybe">     274:</span> <span class="f">}</span>
<a name="275" /><span class="Maybe">     275:</span> 
<a name="276" /><span class="Maybe">     276:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">bitmap_weight</span><span class="f">(</span><span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="277" /><span class="Maybe">     277:</span> <span class="f">{</span>
<a name="278" /><span class="Maybe">     278:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_c21hbGxfY29uc3RfbmJpdHNfMA__"><span class="b">small_const_nbits</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span>
<a name="279" /><span class="Maybe">     279:</span>         <span class="m">return</span> <span class="b">hweight_long</span><span class="f">(</span><span class="f">*</span><span class="b">src</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_QklUTUFQX0xBU1RfV09SRF9NQVNLXzA_"><span class="b">BITMAP_LAST_WORD_MASK</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="280" /><span class="Maybe">     280:</span>     <span class="m">return</span> <span class="b">__bitmap_weight</span><span class="f">(</span><span class="b">src</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="281" /><span class="Maybe">     281:</span> <span class="f">}</span>
<a name="282" /><span class="Maybe">     282:</span> 
<a name="283" /><span class="Maybe">     283:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">bitmap_shift_right</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span>
<a name="284" /><span class="Maybe">     284:</span>             <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src</span><span class="f">,</span> <span class="m">int</span> <span class="b">n</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="285" /><span class="Maybe">     285:</span> <span class="f">{</span>
<a name="286" /><span class="Maybe">     286:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_c21hbGxfY29uc3RfbmJpdHNfMA__"><span class="b">small_const_nbits</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span>
<a name="287" /><span class="Maybe">     287:</span>         <span class="f">*</span><span class="b">dst</span> <span class="f">=</span> <span class="f">*</span><span class="b">src</span> <span class="f">&gt;&gt;</span> <span class="b">n</span><span class="f">;</span>
<a name="288" /><span class="Maybe">     288:</span>     <span class="m">else</span>
<a name="289" /><span class="Maybe">     289:</span>         <span class="b">__bitmap_shift_right</span><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src</span><span class="f">,</span> <span class="b">n</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="290" /><span class="Maybe">     290:</span> <span class="f">}</span>
<a name="291" /><span class="Maybe">     291:</span> 
<a name="292" /><span class="Maybe">     292:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">bitmap_shift_left</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">dst</span><span class="f">,</span>
<a name="293" /><span class="Maybe">     293:</span>             <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">src</span><span class="f">,</span> <span class="m">int</span> <span class="b">n</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="294" /><span class="Maybe">     294:</span> <span class="f">{</span>
<a name="295" /><span class="Maybe">     295:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_c21hbGxfY29uc3RfbmJpdHNfMA__"><span class="b">small_const_nbits</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">)</span>
<a name="296" /><span class="Maybe">     296:</span>         <span class="f">*</span><span class="b">dst</span> <span class="f">=</span> <span class="f">(</span><span class="f">*</span><span class="b">src</span> <span class="f">&lt;&lt;</span> <span class="b">n</span><span class="f">)</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_QklUTUFQX0xBU1RfV09SRF9NQVNLXzA_"><span class="b">BITMAP_LAST_WORD_MASK</span></a><span class="f">(</span><span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="297" /><span class="Maybe">     297:</span>     <span class="m">else</span>
<a name="298" /><span class="Maybe">     298:</span>         <span class="b">__bitmap_shift_left</span><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src</span><span class="f">,</span> <span class="b">n</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="299" /><span class="Maybe">     299:</span> <span class="f">}</span>
<a name="300" /><span class="Maybe">     300:</span> 
<a name="301" /><span class="Maybe">     301:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">bitmap_parse</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">buflen</span><span class="f">,</span>
<a name="302" /><span class="Maybe">     302:</span>             <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">maskp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nmaskbits</span><span class="f">)</span>
<a name="303" /><span class="Maybe">     303:</span> <span class="f">{</span>
<a name="304" /><span class="Maybe">     304:</span>     <span class="m">return</span> <span class="b">__bitmap_parse</span><span class="f">(</span><span class="b">buf</span><span class="f">,</span> <span class="b">buflen</span><span class="f">,</span> <span class="c">0</span><span class="f">,</span> <span class="b">maskp</span><span class="f">,</span> <span class="b">nmaskbits</span><span class="f">)</span><span class="f">;</span>
<a name="305" /><span class="Maybe">     305:</span> <span class="f">}</span>
<a name="306" /><span class="Maybe">     306:</span> 
<a name="307" /><span class="Maybe">     307:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* __ASSEMBLY__ */</span>
<a name="308" /><span class="Maybe">     308:</span> 
<a name="309" /><span class="True">     309:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* __LINUX_BITMAP_H */</span>
<a name="310" /><span class="True">     310:</span> </pre>
  </body>
</html>
